package com.hmy.infrastructure.api.bo.request.map;

import com.hmy.ccp.common.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @author seven.qi 齐胜南
 * @version 1.0
 * @description
 * @date 2024/4/16 15:38
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class TruckRoutePlanApiRequest extends BaseRequest {
    /**
     * 出发点经纬度
     * 填入规则：X,Y，采用","分隔，例如“ 117.500244, 40.417801 ”，小数点后不得超过6位
     */
    private String origin;
    /**
     * 出发POI的唯一编号
     * 当起点为POI时，建议填充此值。填充此值以后，会影响路径规划的结果。举例来说：当起点的经纬度在高架桥上时，若填充了此值我们会以此POI的经纬度作为更高优的处理。
     */
    private String originid;
    /**
     * 出发POI的类型
     * 当起点为POI时，建议填充此值。
     */
    private String originidtype;
    /**
     * 目的地经纬度
     * 填入规则：X,Y，采用","分隔，例如“ 117.500244, 40.417801 ”，小数点后不得超过6位。
     */
    private String destination;
    /**
     * 终点POI的唯一编号
     * 当终点为POI时，建议填充此值。填充此值以后，会影响路径规划的结果，会以此POI的经纬度作为更高优的处理。
     */
    private String destinationid;
    /**
     * 终点POI的类型
     * 当终点为POI时，建议填充此值。
     */
    private String destinationtype;
    /**
     * 设备唯一编号
     * android的imei，ios的idfa
     */
    private String diu;
    /**
     * 驾车选择策略，默认1
     * 1，躲避拥堵：返回的结果考虑路况，尽量躲避拥堵而规划路径；对应导航SDK货导策略12；
     * 2，不走高速：返回的结果考虑路况，不走高速；对应导航SDK货导策略13；
     * 3，避免收费：返回的结果考虑路况，尽可能规划收费较低甚至免费的路径；对应导航SDK货导策略14；
     * 4，躲避拥堵+不走高速：返回的结果考虑路况，尽量躲避拥堵，并且不走高速；对应导航SDK货导策略15；
     * 5，避免收费+不走高速：返回的结果考虑路况，尽量不走高速，并且尽量规划收费较低甚至免费的路径结果；对应导航SDK货导策略16；
     * 6，躲避拥堵+避免收费：返回的结果考虑路况，尽量的躲避拥堵，并且规划收费较低甚至免费的路径结果；对应导航SDK货导策略17；
     * 7，躲避拥堵+避免收费+不走高速：返回的结果考虑路况，尽量躲避拥堵，规划收费较低甚至免费的路径结果，并且尽量不走高速路；对应导航SDK货导策略18；
     * 8，高速优先：返回的结果考虑路况，会优先选择高速路；对应导航SDK货导策略19；
     * 9，躲避拥堵+高速优先：返回的结果考虑路况，会优先考虑高速路，并且会考虑路况躲避拥堵；对应导航SDK货导策略20；
     * 10，无路况速度优先：基于历史的通行速度数据，不考虑当前路况的影响，返回速度优先的路；如果不需要路况干扰计算结果，推荐使用此策略；（导航SDK货导策略无对应，真实导航时均会考虑路况）
     * 11，高德推荐：返回的结果会考虑路况，躲避拥堵，速度优先以及避免收费；500Km规划以内会返回多条结果，500Km以外会返回单条结果；考虑路况情况下的综合最优策略，推荐使用；对应导航SDK货导策略10；
     * 12，无路况+不走高速：基于历史的通行速度数据，不考虑当前路况的影响，且不走高速路线，返回速度优先的路。
     */
    private Integer strategy;
    /**
     * 途经点
     * 规则：经度和纬度用“,”分隔，坐标点之间用";"分隔 。最大数目：16个坐标点，如果输入多个途径点，则按照用户输入的顺序进行路径规划"
     */
    private String waypoints;
    /**
     * 车辆大小
     * 高德此分类依据国标。
     * 1：微型车，
     * 2：轻型车，
     * 3：中型车，
     * 4：重型车
     */
    private Integer size;
    /**
     * 车辆高度，默认1.6
     * 单位米，取值[0 – 25.5]米，默认 1.6 米，会严格按照填写数字进行限行规避，请按照车辆真实信息合理填写。
     */
    private Float height;
    /**
     * 车辆宽度，默认2.5
     * 单位米，取值[0 – 25.5]米，默认 2.5 米，会严格按照填写数字进行限行规避，请按照车辆真实信息合理填写。
     */
    private Float width;
    /**
     * 车辆总重，默认10
     * 单位吨，取值[0 – 100]吨，默认 10 吨，会严格按照填写数字进行限行规避，请按照车辆真实信息合理填写。 总重的含义是核定载重加上车辆自重。
     */
    private Float load;
    /**
     * 货车核定载重。默认0.9
     * 单位吨，取值[0 – 100）吨，默认 0.9 吨，会严格按照填写数字进行限行规避，请按照车辆真实信息合理填写。 核定载重的含义是可装载货物的最大重量。
     */
    private Float weight;
    /**
     * 车辆轴数，默认2
     * 单位个，取值[0 –255]个，默认 2个轴，会严格按照填写数字进行限行规避，请按照车辆真实信息合理填写。轴数影响通行费用的计算
     */
    private Integer axis;
    /**
     * 车牌省份
     * 用汉字填入车牌省份缩写。用于判断是否限行
     */
    private String province;
    /**
     * 车辆类型，默认0
     * 0：普通货车（默认值）
     * 1：纯电动货车
     * 2：插电混动货车
     */
    private Integer cartype;
    /**
     * 豁免限行政策
     * 支持上传需要豁免的限行政策id，此政策id需要通过限行接口获取。最多支持传入10条限行政策进行豁免，传入后的政策，在算路时将不算为限行。
     */
    private String exempts;
    /**
     * 避让区域
     * 区域避让，支持100个避让区域，每个区域最多可有16个顶点，每个区域的最大面积是100平方公里。经度和纬度用"",""分隔，坐标点之间用";"分隔，区域之间用"|"分隔。如果是四边形则有四个坐标点，如果是五边形则有五个坐标点。
     */
    private String avoidpolygons;
    /**
     * 是否使用通行证信息，默认false
     * 提前在高德合作城市的小程序、APP中进行过办证操作的，可以选择。选择“是”后，高德算路引擎将查询车牌对应的通行证数据，参考通行证规定的路线进行算路，取值
     */
    private Boolean has_pass;
    /**
     * 是否返回路线数据，默认为1
     * 当取值为1时，steps与tmcs下的polyline数据会正常返回；当取值为0时，steps与tmcs下的polyline数据为空。
     */
    private Integer showpolyline;
    /**
     * 是否返回steps字段内容，默认为0
     * 当取值为0时，steps字段内容正常返回；当取值为1时，steps字段内容为空。
     */
    private Integer nosteps;
}
